home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / networke / civ-0.000 / civ-0 / civ-0.3 / src / city.h < prev    next >
C/C++ Source or Header  |  1995-11-19  |  2KB  |  116 lines

  1. #ifndef _CITY_H
  2. #define _CITY_H
  3.  
  4. #include "mytypes.h"
  5. #include "list.h"
  6.  
  7. // MarkM added FREE_CONTENTED for civil-disorder code.
  8. // it specifies how many contented folk you get free per city
  9. // before having to *make* them content/happy somehow.
  10. const int FREE_CONTENTED = 2;
  11.  
  12. class MsgQ;
  13. class Player;
  14.  
  15. typedef List<charp> StrList;
  16.  
  17. class City
  18. {
  19. public:
  20.   City(char *Name, ulong Id, int X, int Y, uchar OwnerId);
  21.   City(); // read from save file
  22.   ~City();
  23.  
  24.   // do end of turn update for this city
  25.   // fails if the city dies
  26.   int Update();
  27.  
  28.   void Draw(int atx, int aty);
  29.  
  30.   ulong id;
  31.   char *name;
  32.   int x, y;
  33.   uchar ownerId;
  34.  
  35.   List<ulong> units;
  36.  
  37.   int prod, food, trade;
  38.   int science, money, luxuries;
  39.   int surpProd;
  40.   int corruption; // not used yet
  41.   int pollution;
  42.  
  43.   int size;
  44.   int working, elvi, goondas, happy;
  45.  
  46.   char *building;
  47.   int accProd, needProd;
  48.  
  49.   int foodStored, foodSupport;
  50.   int foodStoreCap;
  51.  
  52.   List<charp> buildings; // things we have built in the city
  53.  
  54.   List<charp> messages; // messages to show for this city
  55.  
  56.   void DeleteBuilding(char *);
  57.  
  58.   char *LookupBuilding(char *, int);
  59.  
  60.   void Save();
  61.  
  62.   void SendCityInfo(MsgQ *q);
  63.   void SendCapturedInfo(MsgQ *q);
  64.  
  65.   void WorkOn(char *what); // what we should work on
  66.  
  67.   void InfoScreen(); // draws the whole info screen
  68.  
  69.   // functions to draw various components, call them if you update
  70.   // any of the city variables
  71.   void DrawBasic();
  72.   void DrawCityMap();
  73.   void ShowPeople();
  74.   void ShowEcon();
  75.   void ShowFood();
  76.   void ShowOwnUnits();
  77.   void ShowStationedUnits();
  78.   void ShowWorkInProg();
  79.   void ShowBuildings();
  80.  
  81.   void ComputeEcon();
  82.  
  83.   friend void AllocCityColors();
  84.  
  85.   void PutExtraWorker();
  86.   void PutPollution();
  87.   void DrawIfVisible();
  88.  
  89.   char *MakeWorkMap(int &len);
  90.   void TransWorkMap(MsgQ *q);
  91.  
  92.   // returns a list of things we can build
  93.   StrList CanBuild();
  94.  
  95.   void TakeHit(); // city attacked
  96.  
  97.   int HasBuilding(char *);
  98.  
  99.   static int white; // white color for writing text
  100.   static int black, red, gray;
  101.   static int back;
  102.  
  103.   static long hBulb, hElvis, hFood, hGoonda, hLux, hMoney, hShield, hTrade;
  104.   static long hWorker;
  105.  
  106. private:
  107.  
  108.   void PutIcon(long, int, int &, int &, int, int, int);
  109.  
  110.   void Produce();
  111. };
  112.  
  113. void GetCapturedCity(MsgQ *q, Player *p);
  114.  
  115. #endif
  116.